﻿Imports System.Data
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data.OleDb
Imports System
Imports System.Globalization

Partial Class Interfaz_popUpActividades
    Inherits System.Web.UI.Page

    Dim CL As Logica.ModuloAdministracion.ControladorLogica

#Region "Variables"
    Dim dataPresupuesto As New DataSetPresupuesto
    Dim dataPresupuestoCliente As New DataSetPresupuestoCliente

    Dim dtDatos As New DataTable
    Dim dataset As New DataSet
    Dim dtDatosAct As New DataTable
    Dim datasetAct As New DataSet
    Dim dtDatosInfoPres As New DataTable
    Dim datasetInfoPres As New DataSet

#End Region
   
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        CL = Logica.ModuloAdministracion.ControladorLogica.getInstance

        If Not Page.IsPostBack Then
            Me.PanelAct.Visible = False
        End If

        addAtributesToData()
        Me.LoadPag2()

        If Not Page.IsPostBack Then
            Dim dataTab As DataTable = Session("Actividad" + Request("pNumFila"))
            If Not dataTab Is Nothing Then
                Me.GridActividad.DataSource = dataTab
                Me.GridActividad.DataBind()
            Else
                Me.GridActividad.DataBind()
            End If
        End If
    End Sub

#Region "Funciones"
    Private Sub AlmacenaDatos()
        Try

            Dim dtNuevosDatos As New DataTable

            dtNuevosDatos.Columns.Add(New DataColumn("ID"))
            dtNuevosDatos.Columns.Add(New DataColumn("ACTIVIDAD"))
            dtNuevosDatos.Columns.Add(New DataColumn("CANTHORAS"))
            dtNuevosDatos.Columns.Add(New DataColumn("VALORHH"))
            dtNuevosDatos.Columns.Add(New DataColumn("FACTORHH"))
            dtNuevosDatos.Columns.Add(New DataColumn("DESCRIPCION"))
            dtNuevosDatos.Columns.Add(New DataColumn("TOTALNETO"))
            dtNuevosDatos.Columns.Add(New DataColumn("PRIOR"))

            Dim drNuevosDatos As DataRow = dtNuevosDatos.NewRow

            For i As Integer = 0 To Me.GridActividad.Rows.Count - 1
                drNuevosDatos.Item("ACTIVIDAD") = Me.GridActividad.Rows(i).Cells(1).Text
                drNuevosDatos.Item("CANTHORAS") = Me.GridActividad.Rows(i).Cells(2).Text
                drNuevosDatos.Item("VALORHH") = Me.GridActividad.Rows(i).Cells(3).Text
                drNuevosDatos.Item("FACTORHH") = Me.GridActividad.Rows(i).Cells(4).Text
                drNuevosDatos.Item("DESCRIPCION") = Me.GridActividad.Rows(i).Cells(5).Text
                drNuevosDatos.Item("TOTALNETO") = Me.GridActividad.Rows(i).Cells(6).Text
                drNuevosDatos.Item("PRIOR") = Me.GridActividad.Rows(i).Cells(7).Text
                dtNuevosDatos.Rows.Add(drNuevosDatos)
            Next
            Session("Actividad" + Request("pNumFila")) = dtNuevosDatos

        Catch ex As Exception

        End Try
    End Sub

    Private Sub LoadPag2()
        Dim i As Integer
        Dim ArrayCliente As New ArrayList
        Dim ArrayActividad As New ArrayList
        Dim arrayProveedores As New ArrayList

        ArrayCliente = CL.obtenerCliente()
        ArrayActividad = CL.obtenerActividad()
        arrayProveedores = CL.ObtenerProveedor()

        If Not Page.IsPostBack Then

            For i = 0 To ArrayActividad.Count - 1
                Dim itemActividad As New ListItem

                itemActividad.Text = DirectCast(ArrayActividad.Item(i), Actividad).nombre
                itemActividad.Value = DirectCast(ArrayActividad.Item(i), Actividad).id
                Me.DropActividad.Items.Add(itemActividad)
            Next
        End If

        'se guardan datos en secion para el positback de la pagina respecto al los datos del datagridview

        If Session("PresupuestoAct") Is Nothing Then
            Session("PresupuestoAct") = dtDatos
        Else
            dtDatos = DirectCast(Session("PresupuestoAct"), DataTable)
        End If


        If Not Page.IsPostBack Then

            Try
                dtDatos.Columns.Add(New DataColumn("ID"))
                dtDatos.Columns.Add(New DataColumn("ACTIVIDAD"))
                dtDatos.Columns.Add(New DataColumn("CANTHORAS"))
                dtDatos.Columns.Add(New DataColumn("VALORHH"))
                dtDatos.Columns.Add(New DataColumn("FACTORHH"))
                dtDatos.Columns.Add(New DataColumn("DESCRIPCION"))
                dtDatos.Columns.Add(New DataColumn("TOTALNETO"))
                dtDatos.Columns.Add(New DataColumn("PRIOR"))
                Me.GridActividad.DataBind()
                Me.GridActividad.DataSource = Me.dtDatos

                LlenarGridPresuAnterior()
            Catch ex As Exception
                Me.LabelAvisoAct.Text = ex.ToString
            End Try
        End If

        Me.GridActividad.DataSource = Me.dtDatos
    End Sub

    Private Sub InsertarItemActividad()
        Try
            Dim drDatos As DataRow = dtDatos.NewRow

            Dim neto As Double = CInt(Me.TxtCantHorasAct.Text) * CDbl(Me.TxtFactorAct.Text) * CInt(eliminarFormatoNumero(Me.TxtValorHHAct.Text))
            Dim idAps As String = CL.obtenerUltimoPresupuestoSubproyectoActividad

            drDatos.Item("ID") = idAps
            drDatos.Item("ACTIVIDAD") = Me.DropActividad.Text
            drDatos.Item("CANTHORAS") = CInt(Me.TxtCantHorasAct.Text)
            drDatos.Item("VALORHH") = eliminarFormatoNumero(Me.TxtValorHHAct.Text)
            drDatos.Item("FACTORHH") = CDbl(Me.TxtFactorAct.Text)
            drDatos.Item("DESCRIPCION") = Me.TextDescripcionAct.Text
            drDatos.Item("TOTALNETO") = neto
            drDatos.Item("PRIOR") = CInt(Me.TxTPrioridadAct.Text)

            dtDatos.Rows.Add(drDatos)

            Me.GridActividad.DataSource = dtDatos
            Me.GridActividad.DataBind()

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Private Sub InsertarItemActividadBD()

        If Me.TxtFactorAct.Text <> "" And Me.TextDescripcionAct.Text <> _
        "" And Me.TxtValorHHAct.Text <> "" And Me.TxtCantHorasAct.Text <> "" Then

            Dim fkActividad As String = DropActividad.SelectedValue
            Dim act As presupuestosubproyectoactividad
            Dim neto As Integer = CInt(Me.TxtCantHorasAct.Text) * CDbl(Me.TxtFactorAct.Text) * CInt(eliminarFormatoNumero(Me.TxtValorHHAct.Text))
            Dim fksubpresu As Integer = CInt(Request("pNumFila").ToString)
            Dim iva As Integer = neto * 0.19


            act = New presupuestosubproyectoactividad(Me.TextDescripcionAct.Text, -1, CInt(Me.TxtCantHorasAct.Text), CInt(eliminarFormatoNumero(Me.TxtValorHHAct.Text)), _
            CInt(Me.TxtFactorAct.Text), CInt(Me.TxTPrioridadAct.Text), fksubpresu, fkActividad, neto, iva)

            CL.insertarActividadPresupuestoSubproyecto(act, fksubpresu)
            InsertarItemActividad()

            Me.GridActividad.ForeColor = Drawing.Color.Blue
            Me.LabelAvisoAct.Text = "Los datos han sido ingresados satisfactoriamente"
        Else
            Me.LabelAvisoAct.ForeColor = Drawing.Color.Red
            Me.LabelAvisoAct.Text = "Complete todos los datos"
        End If


    End Sub

    Private Sub LimpiarItem()
        TxtCantHorasAct.Text = String.Empty
        TxtFactorAct.Text = String.Empty
        TxtValorHHAct.Text = String.Empty
        TextDescripcionAct.Text = String.Empty
        Me.TxtFactorAct.Text = String.Empty
    End Sub

    Private Sub deleteActFromDB(ByVal id As Integer)
        CL.EliminarActividadPresupuestoSubproyecto(id)
    End Sub

   

    Public Sub LlenarGridPresuAnterior()
        Try
            Dim fkPresuSubP As String = Request("pNumFila")
            Dim PresuSubPACT As ArrayList = CL.obtenerPresupuestoSubproyectoActividad(fkPresuSubP)


            If PresuSubPACT.Count > 0 Then
                Me.PanelAct.Visible = True
            End If

            Dim j As Integer

            For j = 0 To PresuSubPACT.Count - 1

                Dim drDatos2 As DataRow = dtDatos.NewRow

                Dim pspa As presupuestosubproyectoactividad = DirectCast(PresuSubPACT.Item(j), presupuestosubproyectoactividad)


                drDatos2.Item("ID") = pspa.id
                drDatos2.Item("ACTIVIDAD") = pspa.fkactividad
                drDatos2.Item("CANTHORAS") = pspa.cantidadHora
                drDatos2.Item("VALORHH") = pspa.valorHoraHombre
                drDatos2.Item("FACTORHH") = pspa.factorHH
                drDatos2.Item("DESCRIPCION") = pspa.descripcion
                drDatos2.Item("TOTALNETO") = pspa.neto
                drDatos2.Item("PRIOR") = pspa.prioridadTarea

                dtDatos.Rows.Add(drDatos2)


            Next j
        Catch ex As Exception
        End Try

        Me.GridActividad.DataSource = dtDatos
        Me.GridActividad.DataBind()


    End Sub
#End Region

#Region "Eventos"

    Sub GridActividad_RowDeleting(ByVal sender As Object, ByVal e As GridViewDeleteEventArgs) Handles GridActividad.RowDeleting

        Dim dt As DataTable = CType(Session("PresupuestoAct"), DataTable)
        deleteActFromDB(CInt(dt.Rows(e.RowIndex).Item(0)))
        dt.Rows(e.RowIndex).Delete()
        GridActividad.DataSource = dt
        GridActividad.DataBind()

    End Sub

#End Region

#Region "Botones"
    'Botones
    Protected Sub BtnIngresarAct_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnIngresarAct.Click
        Me.PanelAct.Visible = True
        InsertarItemActividadBD()
        Me.LimpiarItem()
    End Sub

    Protected Sub BtnLimpiarAct_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnLimpiarAct.Click
        Me.LimpiarItem()
    End Sub

#End Region

#Region "Javascript"
    Public Sub addAtributesToData()
        Me.TxtCantHorasAct.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        Me.TxtValorHHAct.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        Me.TxtFactorAct.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        Me.TxTPrioridadAct.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")

        Me.TxtValorHHAct.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
        Me.TxtValorHHAct.Attributes.Add("Onblur", "addsimbol(this,1);")
    End Sub

    Public Function eliminarFormatoNumero(ByVal valor As String) As String
        valor = Replace(valor, "$", "")
        valor = Replace(valor, ",", "")
        valor = Replace(valor, "%", "")
        Return valor
    End Function

#End Region

End Class

